import '../models/news_item.dart';

/// 模拟新闻服务（当网络API不可用时使用）
class MockNewsService {
  static final List<NewsItem> _mockNews = [
    NewsItem(
      id: '1',
      title: 'Flutter 3.0 发布：性能大幅提升',
      summary: 'Flutter 3.0 带来了显著的性能改进，包括更快的渲染速度和更低的内存占用...',
      content: 'Flutter 3.0 是一个重要的里程碑版本，带来了许多令人兴奋的新特性和性能改进。新版本在渲染性能方面有显著提升，特别是在复杂UI场景下的表现。同时，内存占用也得到了优化，使得应用运行更加流畅。',
      category: '科技',
      publishedAt: DateTime.now().subtract(const Duration(hours: 2)),
    ),
    NewsItem(
      id: '2',
      title: 'Dart 语言新特性：模式匹配',
      summary: 'Dart 3.0 引入了强大的模式匹配功能，让代码更加简洁和表达力更强...',
      content: 'Dart 3.0 的模式匹配功能是一个重大更新，它允许开发者使用更直观的语法来处理复杂的数据结构。这个特性特别适合处理JSON数据、枚举类型和复杂对象。',
      category: '科技',
      publishedAt: DateTime.now().subtract(const Duration(hours: 4)),
    ),
    NewsItem(
      id: '3',
      title: '移动应用开发趋势分析',
      summary: '2024年移动应用开发的主要趋势包括跨平台开发、AI集成和性能优化...',
      content: '2024年移动应用开发领域呈现出几个重要趋势。跨平台开发框架如Flutter和React Native继续受到欢迎，AI和机器学习功能的集成成为新的热点，同时性能优化和用户体验提升仍然是开发者的重点关注领域。',
      category: '科技',
      publishedAt: DateTime.now().subtract(const Duration(hours: 6)),
    ),
    NewsItem(
      id: '4',
      title: '全球科技股表现强劲',
      summary: '受AI技术发展推动，全球科技股在近期表现强劲，投资者信心持续提升...',
      content: '人工智能技术的快速发展为科技行业注入了新的活力。各大科技公司的AI相关业务增长迅速，推动了股价的上涨。投资者对科技股的前景保持乐观态度。',
      category: '财经',
      publishedAt: DateTime.now().subtract(const Duration(hours: 8)),
    ),
    NewsItem(
      id: '5',
      title: '数字货币市场波动加剧',
      summary: '近期数字货币市场出现较大波动，投资者需要谨慎评估风险...',
      content: '数字货币市场近期经历了较大的价格波动，这主要受到监管政策变化和市场情绪影响。投资者在参与数字货币投资时需要充分了解风险，做好风险管理。',
      category: '财经',
      publishedAt: DateTime.now().subtract(const Duration(hours: 10)),
    ),
    NewsItem(
      id: '6',
      title: '健康生活方式指南',
      summary: '专家建议保持规律作息、均衡饮食和适量运动，有助于提升生活质量...',
      content: '健康的生活方式包括多个方面：保持规律的作息时间，确保充足的睡眠；均衡饮食，多吃蔬菜水果；适量运动，增强体质；保持良好的心态，学会压力管理。',
      category: '生活',
      publishedAt: DateTime.now().subtract(const Duration(hours: 12)),
    ),
    NewsItem(
      id: '7',
      title: '环保生活小贴士',
      summary: '从日常生活中的小事做起，每个人都可以为环保事业贡献力量...',
      content: '环保生活可以从很多小事开始：减少一次性用品的使用，选择可重复使用的购物袋；节约用水用电，选择节能家电；垃圾分类投放，减少环境污染；选择公共交通或骑行出行。',
      category: '生活',
      publishedAt: DateTime.now().subtract(const Duration(hours: 14)),
    ),
    NewsItem(
      id: '8',
      title: '学习编程的最佳实践',
      summary: '对于初学者来说，选择合适的编程语言和学习方法非常重要...',
      content: '学习编程需要循序渐进，建议从基础语法开始，然后通过实际项目来巩固知识。选择一门适合的编程语言很重要，Python和JavaScript都是不错的选择。同时，多动手实践，参与开源项目，与其他开发者交流学习。',
      category: '科技',
      publishedAt: DateTime.now().subtract(const Duration(hours: 16)),
    ),
  ];

  /// 获取模拟新闻列表
  Future<List<NewsItem>> fetchNews() async {
    // 模拟网络延迟
    await Future.delayed(const Duration(seconds: 1));
    return List.from(_mockNews);
  }

  /// 获取模拟新闻详情
  Future<NewsItem> fetchNewsDetail(String id) async {
    await Future.delayed(const Duration(milliseconds: 500));

    final news = _mockNews.firstWhere(
      (item) => item.id == id,
      orElse: () =>
          NewsItem(id: id, title: '新闻不存在', summary: '抱歉，您查找的新闻不存在', content: '抱歉，您查找的新闻不存在', category: '未知', publishedAt: DateTime.now()),
    );

    return news;
  }

  /// 搜索模拟新闻
  Future<List<NewsItem>> searchNews(String query) async {
    await Future.delayed(const Duration(milliseconds: 800));

    if (query.isEmpty) {
      return List.from(_mockNews);
    }

    return _mockNews.where((news) {
      return news.title.toLowerCase().contains(query.toLowerCase()) ||
          news.summary.toLowerCase().contains(query.toLowerCase()) ||
          news.content.toLowerCase().contains(query.toLowerCase());
    }).toList();
  }
}
